package nl.jteam.jsa.core.metadata;

/**
 * @author Uri Boness
 */
public interface FieldMetaData {

    /**
     * Returns the name of the field. The name of the field must be unique within the document it belongs to.
     *
     * @return The name of the field.
     */
    String getName();

    /**
     * Returns the type of the data this fields holds.
     *
     * @return The type of the data this field holds.
     */
    Class getDataType();

    /**
     * Return the {@link nl.jteam.jsa.core.metadata.FieldIndexStrategy index strategy} that is used when a field of
     * this type is indexed.
     *
     * @return The field index strategy that defines how a field of this type should be indexed.
     */
    FieldIndexStrategy getIndexStrategy();

}
